#pragma once

#include <memory>
#include <string>

#include "rocksdb/status.h"

namespace rocksdb {
	class DB;
	class ColumnFamilyHandle;
}

namespace stream {
namespace impl {
namespace rocksdb {

class Table {
public:
	Table(std::shared_ptr<::rocksdb::DB> db, const std::string & name, ::rocksdb::ColumnFamilyHandle * handle);
	~Table();

	::rocksdb::Status get(const std::string & key, std::string & value) ;
	::rocksdb::Status put(const std::string & key, const std::string & value);
	::rocksdb::Status del(const std::string & key);
private:
	std::shared_ptr<::rocksdb::DB> _db;
	std::string _name;
	::rocksdb::ColumnFamilyHandle * _handle;
};

}//end namespace rocksdb
}//end namespace impl
}//end namespace stream
